<?php
namespace app\zyapi\controller;
/**
 * @Author: 刘洪
 * @Date:   2019-01-17 11:47:38
 * @Last Modified by:   user
 * @Last Modified time: 2019-04-13 08:18:11
 */
use think\Controller;
//use app\zyapi\controller\MainController;//主控制器
use think\Loader;
/**
 * 
 */
class SmsController extends Controller
{
	/**
	 *@name 		sendSms 阿里云短信发送api
	 *@url  			domain.com/zyapi/sms/send_sms
	 *@method 	请求类型	:	POST 或者 GET
	 *@param 		请求参数：
	 *					mobile			[string]		=>	手机号码
	 *       			model 			[string]		=>	短信模板编号
	 *       			content 			[json]		=>	模板参数
	 *       			key 				[string]		=>	AccessKeyId
	 *       			key_secret 	[string]		=>	AccessKeySecret
	 *       			sign 				[string]		=>	短信签名	
	 * @return 	返回信息 		[json]	{'status':'success/error','message':'提示信息'}
	 *          status:  		error 失败   success成功
	 *          message:		提示信息
	 * 成功返回信息：{'status':"success",'message':'接口调用成功！'}
	 * 错误信息说明：
	 * 		
	 *   	错误说明：
	 *    		x001：电话号码，模板号，模板参数等信息缺失
	 *    		x002：AccessKeyId不存在
	 *    		x003：AccessKeySecret不存在
	 *    		x004：短信签名不存在
	 *    	备注：其他错误码，请参考阿里云短信接口错误信息表
	 */
	public function sendSms()
	{
		//获取参数
		$data=$this->request->param();
		$data['content'] = (isset($data['content']) && !empty($data['content']))?$data['content']:[];
		//dump($data);exit;
		//发送短信必要的参数检查  电话号码  模板号  参数内容 || (isset($data['content']) && empty($data['content'])) 
		if( (!isset($data['mobile']) && empty($data['mobile'])) || (!isset($data['model']) && empty($data['model'])) ){
			echo json_encode(['status'=>"error",'message'=>'参数错误(x001)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);exit;
		}
		//检查产品AK等信息
		if(!isset($data['key']) && empty($data['key'])){
			echo json_encode(['status'=>"error",'message'=>'参数错误(x002)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);exit;
		}
		if(!isset($data['key_secret'])  && empty($data['key_secret'])){
			echo json_encode(['status'=>"error",'message'=>'参数错误(x003)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);exit;
		}
		if(!isset($data['sign'])  && empty($data['sign'])){
			echo json_encode(['status'=>"error",'message'=>'参数错误(x004)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);exit;
		}

		// 引入短信发送类
		Loader::import('aliyunsms', __DIR__."/../lib/zy_message/Aliyunsms", '.class.php');
		//实例化短信发送
		$sms=new \SmsDemo($data['key'],$data['key_secret'],$data['sign']);

		//群发短信
		if(is_array($data['mobile'])){
			$res=$sms->sendBatchSms($data['mobile'],$data['model'],$data['content']);
		}else{
			//单发
			$res=$sms->sendSms($data['mobile'],$data['model'],$data['content']);
			//header("content-type:text/html;charset=utf-8");
		}
		//dump($res);exit;
		if($res->Code=='OK'){
			echo json_encode(['status'=>"success",'message'=>'接口调用成功！'],JSON_UNESCAPED_UNICODE);exit;
		}else{
			echo json_encode(['status'=>"error",'message'=>$res->Message],JSON_UNESCAPED_UNICODE);exit;
		}

		//$arr=['name'=>'短信接口测试','product'=>'产品','date'=>'000','day'=>'1'];
		//$res=$sms->sendSms("15858620686","SMS_154585568",$arr) ;
		//dump($res);
	}


	/**
	 * 发送邮件方法
	 * @method sendEmail
	 * @param 所需参数
	 *        host  string  stmp服务器地址
	 *        port  string  端口号 25 465
	 *        secure string 协议 ssl
	 *        username string 账号
	 *        pwd string 密码
	 *        set_from string 发件人
	 *        address string 收件人
	 *        subject string 邮件标题
	 *        content string 邮件正文
	 * @return 返回 [json]	{'status':'success/error','message':'提示信息'}
	 * 成功返回    {'status':"success",'message':'邮件发送成功'}
	 * 失败返回		{'status':"success",'message':'错误信息'}
	 * 错误信息说明：
	 * x001  缺少stmp地址  host
	 * x002  缺少端口信息   port
	 * x003  缺少证书         secure
	 * x004  缺少登录账号    username
	 * x005  缺少登录密码	  pwd
	 * x006  缺少发件人地址  set_from
	 * x007  缺少收件人地址  address
	 * x008  缺少邮件标题    subject
	 * x009  缺少邮件正文    content
	 *
	 * 备注：其他错误信息请参考phpmailer说明
	 */
	public function sendEmail()
	{
		$data=$this->request->param();
		//验证
		if(!isset($data['host'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x001)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['port'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x002)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['secure'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x003)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['username'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x004)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['pwd'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x005)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['set_from'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x006)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['address'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x007)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['subject'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x008)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		if(!isset($data['content'])){
			return json_encode(['status'=>"error",'message'=>'参数错误(x009)：所需的参数值缺失！'],JSON_UNESCAPED_UNICODE);
		}
		//加载邮件类
		Loader::import('PHPMailerAutoload', __DIR__."/../lib/zy_message/phpmailer/phpmailer", '.php');
		//Loader::import('class.smtp', __DIR__."/../lib/zy_message/phpmailer/phpmailer", '.php');
		$mail        = new \PHPMailer();
		$mail->CharSet="UTF-8";
		$mail->isSMTP();
   	 	$mail->IsHTML(true);
		$mail->Host=$data['host'];//发件人使用的smtp服务地址
		$mail->Port=$data['port'];
		$mail->SMTPSecure=$data['secure'];
		$mail->SMTPAuth=true;
		$mail->Username=$data['username'];//发件人邮箱地址
		$mail->Password=$data['pwd'];//发件人密码
	 
		$mail->setFrom($data['set_from'],"");
		$mail->addAddress($data['address'],"");//收件人地址和姓名
		
		$mail->Subject=$data['subject'];//标题
		$mail->Body=html_entity_decode(htmlspecialchars_decode($data['content']));//正文
		if(!$mail->send()){
			return json_encode(['status'=>"error",'message'=>$mail->ErrorInfo],JSON_UNESCAPED_UNICODE);
		}else{
			return json_encode(['status'=>"success",'message'=>'邮件发送成功'],JSON_UNESCAPED_UNICODE);
		}
	}
}
